![Amazon Kinesis Data Firehose から Amazon OpenSearch Serverless コレクションへデータストリームを配信してみた](https://devio2023-media.developers.io/wp-content/uploads/2022/08/amazon-opensearch-service.png)
Amazon Kinesis Data Firehose から Amazon OpenSearch Serverless コレクションへデータストリームを配信してみた
いわさです。
最近 Amazon OpenSearch をよく使っています。
Amazon OpenSearch を使い始めて一番始めに悩むのが、インデックスやコレクションへのデータの取り込み方法だと思います。検証用に手動で CSV アップロードして終わりとはいきません。
いくつかの取り込み方法を試している中で Kinesis Firehose から Amazon OpenSearch Serverless のコレクションへの取り込みもサポートされていることを知りました。
見落としていたのですが、AWS re:Invent 2022 で Amazon OpenSearch Serverless が発表された直後に Kinesis Firehose の送信先としてもサポートされていたようですね。
この記事では実際に上記機能を使って取り込みを行ってみましたので構成の流れを紹介したいと思います。
Amazon OpenSearch Serverless コレクション作成
まずは取り込み先の Amazon OpenSearch Serverless でコレクションを作成します。
コレクションタイプは時系列を選択しています。
ネットワークアクセスタイプは今回はパブリックを設定しています。
推奨の VPC 構成の場合だと Kinesis Firehose と接続する際に次の記事と同様の対応が必要だと思いますが今回は行っていませんのでご注意ください。
データアクセスポリシーはまだ設定していません。
後ほど Kinesis Firehose を構成した後にサービスロールからのアクセスを許可させます。
Kinesis Data Firehose 構築
Kinesis Data Firehose で配信ストリームを作成します。
冒頭の re:Invent 2022 のアップデートを以て、配信ストリームの送信先に Amazon OpenSearch Serverless が追加されています。
Amazon OpenSearch Service とは別の扱いなのでご注意ください。
参照ボタンを押すと、先程構築したサーバーレスコレクションが選択出来る状態になっているので、選択します。
まだインデックスは存在していないので任意のインデックス名を指定します。
後ほどアクセスポリシー設定時にインデックス名は必要になるので、インデックス名は控えておいてください。
前述のとおり今回は OpenSearch Serverless コレクションのネットワークアクセスタイプを VPC タイプにしていないので、送信先 VPC 接続オプションは不要です。
サーバーレスコレクションのセキュリティアクセスポリシーを構成
この時点ではまだ Firehose から OpenSearch Serverless の対象コレクションでデータへの送信許可がされていません。
Firehose 構築時にサービスロールが作成・アタッチされているはずなので今回はこちらを使用してセキュリティアクセスポリシーを構成したいと思います。
次のように対象プリンシパルで先程の IAM ロールを指定します。
次の画像では付与されたリソースに*
が使われていますが、その後何度か試行錯誤しており、最終的には先程のインデックス名を指定しています。ご注意ください。
配信ストリームからデータを送信してみる
これで構成は完了です。
最後に配信ストリームにデータを送ってみましょう。
マネジメントコンソールにはデモデータ送信機能がありますのでこちらを使ってみたいと思います。
ちょっと時間がかかりますが、しばらくすると配信が開始されました。
モニタリングタブから配信ストリームの配信成功数が記録されていることが確認出来ます。
OpenSearch ダッシュボードへアクセスしてみると、Kinesis Data Firehose で指定したインデックスが作成され、デモデータが受信されていることも確認出来ます。
さいごに
本日は Amazon Kinesis Data Firehose から Amazon OpenSearch Serverless コレクションへデータストリームを配信してみました。
簡単に構成してすぐに取り込みを開始することが出来ましたね。
Logstash など構成済みであればそれが一番手動では手軽だと思いますが、未構成かつストリームデータを配信する用途であれば Kinesis Firehose が一番簡単ではないでしょうか。